import {
  request
} from "../../request/index.js";
// ====asyc语法的引入语句，注意：此语句必须单个引入，不能全局引入
import regeneratorRuntime from '../../lib/runtime/runtime';

Page({

  data: {
    // ===自定义组件的数据
    tabs:[
      {
        id:0,
        value:"综合",
        isActive:true
      },
      {
        id:1,
        value:"销量",
        isActive:false
      },
      {
        id:2,
        value:"价格",
        isActive:false
      }
    ],
    goodsList:[]
  },

  // ==向后台发送请求时，需要提供的参数（根据分类中传递过来的分类id，获取对应分类的数据时使用）
  QueryParams:{
    query:"",
    cid:"",
    pagenum:1,
    pagesize:10
  },

  // ===全局变量，总页数
  totalPages:1,

  onLoad: function (options) {
    // ====category中通过url传递的参数，这里已经在options中获取到了
    // console.log(options);

    this.QueryParams.cid=options.cid;
    // ====注意别忘了（）
    this.getGoodsList();
  },

  // ==获取商品列表详细数据的方法（根据商品分类id获取）,使用async技术
    // ====注意别忘了：async
  async getGoodsList(){
    const res = await request({url:"/goods/search",data:this.QueryParams});
    // ===获取总条数，从而计算总页数（下拉刷新功能使用）
    const total=res.total;
    this.totalPages=Math.ceil(total/this.QueryParams.pagesize);

    // === 商品信息存储(展示商品信息使用),注意：数据拼接的使用，目的是放置页面更新时覆盖丢失原来页面的数据信息
    this.setData({
      goodsList:[...this.data.goodsList,...res.goods]
    })

    // === 下拉刷新后，手动关闭加载效果
    wx.stopPullDownRefresh();
      
  },

  // ==子向父传递数据，对应在父中的事件处理
  handleTabsItemChange(e){
    const {index}=e.detail;
    let {tabs}=this.data;
    // ====v代表数据内容，i代表指针
    tabs.forEach((v,i)=> i===index?v.isActive=true:v.isActive=false);
    this.setData({
      tabs
    })
  },

  // ==页面触底事件（为了实现触底页面继续加载下一页）
  onReachBottom(){
    // ===判断是否有下一页数据，采取对应操作
    // ====没有下一页数据时，进行信息提示
    if(this.QueryParams.pagenum>=this.totalPages){
      wx.showToast({
        title: '没有更多商品了！',
      });
        ;
    }else{
      // ====有下一页数据时，获取下一页数据
      this.QueryParams.pagenum++;
      this.getGoodsList();
    }
  },

  //== 下拉刷新页面内容，回到第一页面
  onPullDownRefresh: function () {
    this.setData({
      goodsList:[]
    })
    this.QueryParams.pagenum=1;
    this.getGoodsList();
  }, 

})